<template>
  <div class="search-bar">
    <div v-if="title" class="left">
      <slot name="left">
        <span class="left-title">{{ title }}</span>
      </slot>
    </div>
    <div class="select-time">
      <div class="item start">
        <div class="name">住</div>
        <div class="date">{{ startDateStr }}</div>
      </div>
      <div class="item end">
        <div class="name">离</div>
        <div class="date">{{ endDateStr }}</div>
      </div>
    </div>
    <div class="content ellipsis-text">
      <span class="keyword" >{{ keyword }}</span>
    </div>
    <div class="right">
      <slot name="right">
        <i class="icon-search" v-if="iconSearch"></i>
      </slot>
    </div>
  </div>
</template>

<script setup>
  import useMainStore from '@/stores/modules/main'
  import { fromatMonthDay } from '@/utils/format_date'
  import { storeToRefs } from 'pinia'
  import { computed } from 'vue'
  const mainStore = useMainStore()
  const { startDate, endDate } = storeToRefs(mainStore)
  const startDateStr = computed(() => fromatMonthDay(startDate.value, 'MM.DD'))
  const endDateStr = computed(() => fromatMonthDay(endDate.value, 'MM.DD'))
  const props = defineProps({
    title: {
      type: String,
      defult: () => ({})
    },
    iconSearch: {
      type: Boolean,
      defult: false
    },
    keyWordFontSize: {
      type: String,
      default: '12px'
    },
    keyword: {
      type: String,
      default: '关键字/位置/民宿'
    },
    height: {
      type: String,
      default: '45px'
    }
  })

</script>

<style lang="less" scoped>
  // 重写Vant 样式
  :global(.van-nav-bar__title) {
    width: 73% !important;
    max-width: 100% !important;
  }
  .search-bar {
    display: flex;
    flex-direction: row;
    align-items: center;
    height: v-bind('props.height');
    line-height: v-bind('props.height');
    padding: 0 10px;
    font-size: 14px;
    color: #999;
    border-radius: 6px;
    background: #f2f4f6;

    .left {
      margin-right: 5px;
      border-right: 1px solid #fff;
      .left-title {
        padding-right: 5px;
        color: #333;
        font-weight: 500;
        font-size: 14px;
      }
    }

    .select-time {
      display: flex;
      flex-direction: column;

      .item {
        display: flex;
        flex-direction: row;
        align-items: center;
        line-height: normal;
        font-size: 10px;
        .name {
          font-size: 10px;
          font-weight: 500;
        }

        .date {
          position: relative;
          color: #333;
          margin: 0 10px 0 3px;
          font-weight: 500;
        }
      }

      .end .date::after {
        content: ' ';
        width: 0;
        height: 0;
        border: 4px solid #666;
        border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #666;
        -webkit-border-radius: 3px;
        border-radius: 3px;
        -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        transform: rotate(45deg);
        position: absolute;
        bottom: 0px;
        right: -12px;
      }
    }
    .ellipsis-text {
      overflow: hidden;
      word-wrap: normal;
      white-space: nowrap;
      text-overflow: ellipsis;
    }
    .content {
      position: relative;
      flex: 1;
      padding: 0 6px;
      text-align: left;
      border-left: 1px solid #fff;

      .keyword {
        max-width: 155px;
        flex: 1;
        font-size: v-bind('props.keyWordFontSize');
        font-weight: 500;
      }

      .icon-cancel {
        position: absolute;
        top: 30%;
        right: 0;
        display: inline-block;
        background-image: url(../../assets/img/sprite.png);
        background-position: -92px -58.5px;
        width: 14.5px;
        height: 15px;
        background-size: 125px 110px;
      }
    }

    .right {
      display: flex;
      align-items: center;
    }

    .icon-search {
      width: 24px;
      height: 24px;
      display: inline-block;
      background-image: url(../../assets/img/home/home-sprite.png);
      background-position: -29px -151px;
      background-size: 207px 192px;
    }
  }
</style>
